home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / editor / auror300.zip / CFGINTNL.AML < prev    next >
Text File  |  1996-07-17  |  9KB  |  300 lines

  1. //--------------------------------------------------------------------
  2. // The Aurora Editor v3.0, Copyright (C) 1993-1996 nuText Systems
  3. //
  4. // CFGINTNL.AML
  5. // Configuration for International Options
  6. //
  7. // This macro is called as a utility from other macros such as Calen4,
  8. // Calendar, Clock, and Filestat to retrieve international settings
  9. // and formatted dates/times.
  10. //
  11. // When called as a utility from other macros, one of the following
  12. // options may be passed in arg 3:
  13. //
  14. //   'f' - return formatted date (do not display anything).
  15. //   'n' - return an array of 2-elements: the day and month arrays (do
  16. //         not display anything).
  17. //
  18. // The year, month, day, and day-of-the-week can also be passed as args
  19. // 4-7. If not specified, the current date is assumed.
  20. //
  21. // In the long date format string, the following tokens will be
  22. // substituted with their actual values:
  23. //
  24. //   $D - the day name (Sunday, Monday, etc.)
  25. //   $d - the day of the month (1-31)
  26. //   $M - the month name (January, February, etc.)
  27. //   $y - the year
  28. //--------------------------------------------------------------------
  29.  
  30. include bootpath "define.aml"
  31.  
  32. // dialog box controls
  33. variable dlgwindow, wlang, wtime, wdate, wtimesep, wdatesep,
  34.          wlongdate, wthousands
  35.  
  36. // return values
  37. variable language, langname, timeopt, timesep, thousandsep,
  38.          dateopt, datesep, longformat
  39.  
  40. variable options, year, month, day, dow
  41.  
  42. // language data fields
  43. constant Longformat = 1
  44. constant Format     = 2
  45. constant Daynames   = 3
  46. constant Monthnames = 4
  47.  
  48. // format fields
  49. constant Timeformat  = 1
  50. constant Timesep     = 2
  51. constant Dateformat  = 3
  52. constant Datesep     = 4
  53. constant Thousandsep = 5
  54.  
  55. // language data
  56. langdata = {
  57.   // bokmål
  58.   { "$d. $M $y"  "1:1. "
  59.     {"sondag" "mandag" "tirsdag" "onsdag" "torsdag" "fredag" "lordag"  }  //° in 1,7??
  60.     {"januar" "februar" "mars" "april" "mai" "juni"
  61.      "juli" "august" "september" "oktober" "november" "desember"}
  62.   }
  63.   // dansk
  64.   { "$d. $M $y"  "1:1-."
  65.     {"sondag" "mandag" "tirsdag" "onsdag" "torsdag" "fredag" "lordag"  }  //° in 1,7??
  66.     {"januar" "februar" "marts" "april" "maj" "juni"
  67.      "juli" "august" "september" "oktober" "november" "december"}
  68.   }
  69.   // Deutsch
  70.   { "$D, $d. $M $y"  "1:1.."
  71.     {"Sonntag" "Montag" "Dienstag" "Mittwoch" "Donnerstag" "Freitag" "Samstag"}
  72.     {"Januar" "Februar" "März" "April" "Mai" "Juni"
  73.      "Juli" "August" "September" "Oktober" "November" "Dezember"}
  74.   }
  75.   // English
  76.   { "$D, $M $d, $y"  "0:0-,"
  77.     {"Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"}
  78.     {"January" "February" "March" "April" "May" "June"
  79.      "July" "August" "September" "October" "November" "December"}
  80.   }
  81.   // español
  82.   { "$D $d de $M de $y"  "1:1/."
  83.     {"domingo" "lunes" "martes" "miércoles" "jueves" "viernes" "sábado"}
  84.     {"enero" "febrero" "marzo" "abril" "mayo" "junio"
  85.      "julio" "agosto" "septiembre" "octubre" "noviembre" "diciembre"}
  86.   }
  87.   // français
  88.   { "$D $d $M $y"  "1:1/ "
  89.     {"dimanche" "lundi" "mardi" "mercredi" "jeudi" "vendredi" "samedi"}
  90.     {"janvier" "février" "mars" "avril" "mai" "juin"
  91.      "juillet" "août" "septembre" "octobre" "novembre" "dècembre"}
  92.   }
  93.   // italiano
  94.   { "$D $d $M $y"  "1.1/."
  95.     {"domenica" "lunedì" "martedì" "mercoledì" "giovedì" "venerdì" "sabato"}
  96.     {"gennaio" "febraio" "marzo" "aprile" "maggio" "giugno"
  97.      "luglio" "agosto" "settembre" "ottobre" "novembre" "dicembre"}
  98.   }
  99.   // Nederlands
  100.   { "$D $d $M $y"  "1:1-."
  101.     {"zondag" "manndag" "dinsdag" "woensdag" "donderdag" "vrijdag" "zaterdag"}
  102.     {"januari" "februari" "maart" "april" "mei" "juni"
  103.      "juli" "augustus" "september" "oktober" "november" "december"}
  104.   }
  105.   // português
  106.   { "$D, $d de $M de $y"  "1:1-."
  107.     {"domingo" "segunda-feira" "terça-feira" "quarta-feira" "quinta-feira" "sexta-feira" "sábado"}
  108.     {"janiero" "fevereiro" "marco" "abril" "maio" "junho"
  109.      "julho" "agosto" "setembro" "outubro" "novembro" "dezembro"}
  110.   }
  111.   // Suomi
  112.   { "$d. $Mta $y"  "1:1. "
  113.     {"sunnuntai" "maanantai" "tiistai" "keskiviikko" "torstai" "perjantai" "lauantai"}
  114.     {"tammikuu" "helmikuu" "maaliskuu" "huhtikuu" "toukokuu" "kesäkuu"
  115.      "heinäkuu" "elokuu" "syyskuu" "lokakuu" "marraskuu" "joulukuu"}
  116.   }
  117.   // svenska
  118.   { "den $d $M $y"  "1:2- "
  119.     {"söndag" "måndag" "tisdag" "onsdag" "torsdag" "fredag" "lördag"}
  120.     {"januari" "februari" "mars" "april" "maj" "juni"
  121.      "juli" "augusti" "september" "oktober" "november" "december"}
  122.   }
  123. }
  124.  
  125.  
  126. options = arg 3
  127.  
  128. // return day and month names only, if requested
  129. if pos 'n' options then
  130.   return {langdata [_Language].Daynames langdata [_Language].Monthnames}
  131. end
  132.  
  133. // get the current date in long format
  134. private function longdate (language format)
  135.   if not year then
  136.     // note: getrawtime returns "YYYYMMDDWhhmmssuu"  where:
  137.     // YYYY = year                       hh = hour (0-23)
  138.     // MM   = month (1-12)               mm = minutes (0-59)
  139.     // DD   = day (1-31)                 ss = seconds (0-59)
  140.     // W    = day of week (0=sunday)     uu = hundredths of a sec (0-99)
  141.     rawtime = getrawtime
  142.     year  = rawtime [1:4]
  143.     month = rawtime [5:2]
  144.     day   = rawtime [7:2]
  145.     dow   = rawtime [9]
  146.   end
  147.   // return long date
  148.   return (sub '$D' langdata [language].Daynames[dow + 1] (
  149.           sub '$M' langdata [language].Monthnames[month] (
  150.           sub '$d' day (
  151.           sub '$y' year (if? format format langdata [language].Longformat)))))
  152. end
  153.  
  154. // return formatted date, if requested
  155. if pos 'f' options then
  156.   year = arg 4
  157.   if year then
  158.     month = arg 5
  159.     day   = arg 6
  160.     dow   = arg 7
  161.   end
  162.   return (longdate _Language)
  163. end
  164.  
  165. // write samples
  166. function setsamples
  167.   international (getrow (getwinbuf wdate)) - 1
  168.                 (gettext '' '' '' (getwinbuf wdatesep))
  169.                 (getrow (getwinbuf wtime)) - 1
  170.                 (gettext '' '' '' (getwinbuf wtimesep))
  171.                 (gettext '' '' '' (getwinbuf wthousands))
  172.   oldwindow  = gotowindow dlgwindow
  173.   writestr (thousands 1234567890):13    ''  18 13
  174.   writestr (gettime):-10                ''  40  6
  175.   writestr (getdate)                    ''  51  6
  176.   writestr (longdate (getrow (getwinbuf wlang)) (gettext '' '' '' (getwinbuf wlongdate))):-40  ''  40 13
  177.   gotowindow oldwindow
  178. end
  179.  
  180. // set dlgbox fields with the listbox language
  181. function setlanguage
  182.   language = getrow (getwinbuf wlang)
  183.  
  184.   oldbuf = gotobuf (getwinbuf wlongdate)
  185.   delchar 16000 1
  186.   instext langdata [language].Longformat 1
  187.  
  188.   oldwindow = gotowindow wtime
  189.   gotobuf (getwinbuf wtime)
  190.   setgroupbox langdata [language].Format [1] '0123'
  191.  
  192.   gotobuf (getwinbuf wtimesep)
  193.   delchar 16000 1
  194.   instext langdata [language].Format [2]
  195.  
  196.   gotowindow wdate
  197.   gotobuf (getwinbuf wdate)
  198.   setgroupbox langdata [language].Format [3] '012'
  199.  
  200.   gotobuf (getwinbuf wdatesep)
  201.   delchar 16000 1
  202.   instext langdata [language].Format [4]
  203.  
  204.   gotobuf (getwinbuf wthousands)
  205.   delchar 16000 1
  206.   instext langdata [language].Format [5]
  207.  
  208.   gotobuf oldbuf
  209.   gotowindow oldwindow
  210.  
  211.   setsamples
  212. end
  213.  
  214. // <enter>,<ldouble> on listbox
  215. function selectlang
  216.   setlanguage
  217.   queue "close" "Ok"
  218. end
  219.  
  220. // create dialog box
  221. dlgwindow = dialog "International Options" 72 14 "cp"
  222.  
  223. // language listbox
  224. filespec = bootpath "macro\\*.aml"
  225. databuf "lang"
  226.   "bokmål"      // Norwegian
  227.   "dansk"       // Danish
  228.   "Deutsch"     // German
  229.   "English"     // English
  230.   "español"     // Spanish
  231.   "français"    // French
  232.   "italiano"    // Italian
  233.   "Nederlands"  // Dutch
  234.   "português"   // Portuguese
  235.   "Suomi"       // Finnish
  236.   "svenska"     // Swedish
  237. end
  238. wlang = listbox "&Language:" 3 2 (getcurrbuf) 12 11
  239. whenselect "setlanguage"
  240. whenenter "selectlang"
  241.  
  242. // set initial language
  243. row _Language
  244. language = getrow
  245.  
  246. // time format
  247. wtime = groupbox '&Time:' 18 2
  248.   (menu ''
  249.      item " ( ) hh mm pm"
  250.      item " ( ) hh mm"
  251.      item " ( ) hh mm ss pm   "
  252.      item " ( ) hh mm ss"
  253.    end) '' _TimeOpt '0123'
  254. whenselect "setsamples"
  255.  
  256. // time separator
  257. wtimesep = field "T